//
//  LBWStatusListViewModel.swift
//  weibo
//
//  Created by Limonwei on 15/12/9.
//  Copyright © 2015年 heima. All rights reserved.
//

//对应tableView
//


import UIKit

class LBWStatusListViewModel: NSObject {
    
    //模型数据封装到这个地方
    
    //装有模型的数组
    var statusList: [LBWStatusViewModel]?
    
    //加载微博数据 
    //用于高速外界,当前请求成功与失败信息
    //isPullUp 是否上拉加载
    func loadData(isPullUp: Bool, complete: (isSuccess: Bool,count: Int)->()){
        
        //上啦加载所需要的数据,如果上拉加载是true,就取当前数组最后一个元素的id传给服务器
        var maxId = isPullUp == true ? (statusList?.last?.status?.id ?? 0) : 0
        // 因为,其接口是返回比 maxId 小或等于max_id 的微博,为了避免重复数据,所以直接减1
        if maxId > 0 {
            maxId -= 1
        }
        
        //下拉刷新同上  用sinceId
        let sinceId = isPullUp == true ? 0 : (statusList?.first?.status?.id ?? 0)
        
       LBWNetworkTools.shareTool.loadStatus(LBWUserAccountViewModel.shareAccount.accessToken!,sinceId: sinceId,maxId: maxId) { (response, error) -> () in
        if error != nil {
            printLog("\(error)")
            
            //加载失败
            complete(isSuccess: false, count: 0)
            return
        }
        //执行到这一步,就代表数据请求回来了
        guard let result = response as? [String: AnyObject] else {
            printLog("返回的数据不是一个字典")
            
            return
        }
        //一个字典数据
        guard let statusDicts = result["statuses"] as? [[String: AnyObject]] else {
            printLog("没有")
            return
        }
        
        var tempArray = [LBWStatusViewModel]()
        
        //遍历数组,转成模型
        for value in statusDicts {
            let status = LBWStatus(dict: value)
            tempArray.append(LBWStatusViewModel(status: status))
        }
        
        if self.statusList == nil {
            
            self.statusList = [LBWStatusViewModel]()
        }
        
        //如果是上拉加载,拼接到数组的后面
        if isPullUp {
            
            self.statusList = self.statusList! + tempArray
        }else {
            //如果是下拉刷新,拼接到数组的前面
            self.statusList = tempArray + self.statusList!
        }
        
        complete(isSuccess: true, count: tempArray.count)
        }
        
    }

}


























